package com.yd.domain.commom;

import java.util.HashMap;
import java.util.Map;
/**
 * 统一处理service层抛出的异常
 * @author huy
 * @param
 */
public class BusinessException extends RuntimeException{
	
	private static final long serialVersionUID = 1L;
	private String errorCode = null; //错误代码
	private String errorMessage = null; //错误码信息，与错误代码一一对应，由系统初始化好
	private String module = null;
	private static Map<String,String> errorMap = new HashMap<String,String>();
	
	static{
		//记录错误码对应的错误信息
		errorMap.put(Exceptions.X9999, "unknow exception");
		errorMap.put(Exceptions.A8888, "AUTHORIZATION EXCEPTION");
	}
	
	public String getErrorCode() {
		return errorCode;
	}
	public void setErrorCode(String errorCode) {
		this.errorCode = errorCode;
		setErrorMessage(getErrorMsg(errorCode));
	}
	public String getErrorMessage() {
		return errorMessage;
	}
	public void setErrorMessage(String errorMessage) {
		this.errorMessage = errorMessage;
	}

	public String getModule() {
		return module;
	}
	public void setModule(String module) {
		this.module = module;
	}
	
	/**
	 * @param errorCode 错误码
	 * @param module    错误发生位置
	 * @param message   错误信息描述
	 */
	public BusinessException(String errorCode,String module,String message) {
		super(message);
		setErrorCode(errorCode);
		setModule(module);
	}
	
	/**
	 * @param errorCode 错误码
	 * @param module    错误发生位置
	 * @param message   错误信息描述
	 * @param e			 原始错误
	 */
	public BusinessException(String errorCode,String module,String message,Throwable e) {
		super(message,e);
		setErrorCode(errorCode);
		setModule(module);
	}

	/**
	 * 获取错误码对应的错误信息
	 * @param errorCode
	 * @return
	 */
	public static String getErrorMsg(String errorCode){
	
		if(errorMap.get(errorCode)!=null){

			return errorMap.get(errorCode).toString();
		}else {

			return "UNKNOWN EXCEPTION";
		}
	}
}
